package interfaces

import "fmt"

// 定义接口
type Notifier interface {
	Notifier()
}

// 定义结构体
type User struct {
	name string
	age  int
}

// 结构体实现方法：值类型接受者
func (u *User) Notifier() {
	fmt.Println("Notifier……")
}

// 这里的参数传递的是接口类型，User就是子类型
func Notice(n Notifier) {
	n.Notifier()
}

func Test() {
	// User实现的Notifier方法的接受者是指针类型的，因此这里必须是 &User{}
	var n Notifier
	u := &User{} // 不能使用 u := User{}
	n = u
	n.Notifier()
}
